/***
 * marker操作类
 * @param p_params 参数对象
 * @author sunflower
 */
var MarkerOpter=function(p_params){
	this._layer=p_params.layer;	// markerlayer
	this._imgUrl=p_params.imgUrl; // marker图片，使用一个img为img路径；如果使用不同img，则为路径模板: path/red{index}.png
	this._hiLightImgUrl=p_params.hiLightImgUrl;	// 高亮marker图片，使用一个img为img路径；如果使用不同img，则为路径模板: path/red{index}.png
	this._isUniqueImg=p_params["isUniqueImg"]===undefined? true:p_params.isUniqueImg; // 是否所有marker使用一个img，默认使用一个img
	this._click=p_params["click"]; // marker点击事件
	
	this._index=1;// 序号，内部使用，用于非一个图片marker
};

/***
 * 添加marker
 * @param p_x
 * @param p_y
 * @param p_id featureid 必须为唯一，不可不填
 * @param p_attrs {"a":1,b:2} 额外需要往marker上面添加参数
 */
MarkerOpter.prototype.addMarker=function(p_x,p_y,p_id,p_attrs){
	var _markersLayer=this._layer;
	var _obj=this; // 便于this不是此对象使用
	
	// 判断是否是第一个
	if(this._layer.markers.length===0){
		this._index=1;
	}
	
	//标记图层上添加标记 
	var size = new SuperMap.Size(32,32); 
	var offset = new SuperMap.Pixel(-(size.w/2), -size.h); 
	var icon;
	var _imgUrl=this._imgUrl; // 非序号marker
	var _hiLightImgUrl=this._hiLightImgUrl;
	if(!this._isUniqueImg){ // 序号marker
		_imgUrl=this._imgUrl.replace("{index}",String(this._index));
		_hiLightImgUrl=this._hiLightImgUrl.replace("{index}",String(this._index));
	}
	icon=new SuperMap.Icon(_imgUrl,size,offset); 
	
	var _marker=new SuperMap.Marker(new SuperMap.LonLat(p_x,p_y),icon);
	_marker["id"]=p_id;
	_marker["attrs"]=p_attrs;
	_marker["imgUrl"]=_imgUrl;
	_marker["hiLightImgUrl"]=_hiLightImgUrl;
		
	_marker.events.on({ 
		   "click":function(p_e){
			   var _marker=p_e.object;
				// 清除所有marker选中状态
			   var _markers=_markersLayer.markers;
			   for(var i=0;i<_markers.length;i++){
				   var _mk=_markers[i];
				   /// 重置所有的marker的selected状态为false
				   _mk["selected"]=false;
				   _mk.setUrl(_mk["imgUrl"]);
			   }
			   _marker["selected"]=true;
			   // 设置当前marker为选中状态
			   _marker.setUrl(_mk["hiLightImgUrl"]);
			   
			   // 增加
			   if(_obj._click) _obj._click(_marker);
		   }, 
		   "mouseover":function(p_e){ // 切换高亮显示
			   
			   p_e.object.setUrl(p_e.object["hiLightImgUrl"]);
		   },
		   "mouseout":function(p_e){// 切换正常显示
			   var _marker=p_e.object;
			   if(!_marker["selected"]){

				   _marker.setUrl(_marker["imgUrl"]);
			   }
		   },
		   "scope": _marker 
		}); 

	this._layer.addMarker(_marker);
	this._index++;
};

/***
 * 根据id删除marker
 */
MarkerOpter.prototype.removeMarkerById=function(p_id){
	
	this._layer.removeMarker(this.getMarkerById(p_id));
};

/**
 *  根据id获取marker
 * @param p_id marker的id
 * @returns 获取到的marker的id
 */
MarkerOpter.prototype.getMarkerById=function(p_id){
	var _marker;
	var _markers=this._layer.markers;
    for(var i=0;i<_markers.length;i++){
	   var _mk=_markers[i];
	   if(_mk["id"]===p_id){// 是选中的marker
		   
		   _marker=_mk;
	   }
    }
    
    return _marker;
};

/***
 * 根据id 触发对应marker点击事件
 * @param p_id 
 */
MarkerOpter.prototype.clickMarkerById=function(p_id){
	this.getMarkerById(p_id).events.triggerEvent("click");
};

/***
 * 清除所有markers
 */
MarkerOpter.prototype.clearAllMarkers=function(){
	this._layer.clearMarkers();
	// 清除popup
	this._layer.map.removeAllPopup();
};

/***
 * 根据id高亮显示marker
 */
MarkerOpter.prototype.hiLightMarkerById=function(p_id){

	this.getMarkerById(p_id).events.triggerEvent("mouseover");
};

/***
 * 清除所有marker 高亮状态
 */
MarkerOpter.prototype.clearAllHiLight=function(){
	// 清除所有marker选中状态
   var _markers=_markersLayer.markers;
   for(var i=0;i<_markers.length;i++){
	   var _mk=_markers[i];
	   /// 重置所有的marker的selected状态为false
	   _mk["selected"]=false;
	   _mk.setUrl(_mk["imgUrl"]);
   }
};